// 这个文件对koa-cors进行选项设置
module.exports={
  // 这个用于设置允许跨域的origin  可以是一个函数 也可以是字符串
  origin:'http://localhost:3000',
  // 这里是允许的方法 如果只是设置了origin那么只会允许简单的请求方法 也就是 get head post
  // 如果使用put 或者 delete  或者 contentType:application/json 还是会被拦截下来,这个时候
  // 就需要设置方法和头部了  而且 使用put和delete方法时浏览器会进行预检也就是发出请求之前浏览器
  // 先发出一个options请求,通过了才会继续  所以在开发中经常会遇到发送两个请求一个是options请求
  allowMethods: ['GET', 'POST', 'PUT','DELETE'],
  // 这里是允许的头部  cor默认允许的不包括这些 可以参考网址 
  // http://www.ruanyifeng.com/blog/2016/04/cors.html 
  // 这里的Authorization 主要是为了通过token
  allowHeaders: ['Content-Type', 'Authorization', 'Accept'],
  //  这个选项让服务器允许将浏览器的头放在白名单内 这里主要针对浏览器自定义的头部
  // 比如Authorization,这个必须现在这里允许后才能放在allowHeaders里 而且在mdn上译者标注
  // 在跨源访问时如果服务器给浏览器返回了一些自定义的头 浏览器也是接收不了的需要在这里进行设置
  exposeHeaders:['Authorization'],
  // 这个选项设置预检的请求也就是put与delete请求的结果能够被缓存多久 单位为秒
  maxAge:5,
  // 在跨域过程中,如果浏览器向服务器的请求中如果要携带cookie就必须要设置withCredentials:true
  // 当设置withCredentials属性后,跨域请求的origin就不能为"*"了必须指定一个域名,  而且必须设置
  // Access-Control-Allow-Credentials:true 服务器端才能将响应发送给浏览器端如果没有设置 将不能发送
  // todo 具体的还不太了解
  credentials:true, //默认为false
  // 这个是中间件本身的 意义为: 如果抛出错误则将setHeader添加到err.Header中
  keepHeadersOnError :true
}